package cn.element.io.bio.upload;

import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.UUID;

public class ServerThread extends Thread {

    private final Socket socket;

    public ServerThread(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            // 1.得到一个数据输入流读取客户端发送的数据
            DataInputStream dis = new DataInputStream(socket.getInputStream());

            // 2.读取客户端发送过来的文件类型
            String suffix = dis.readUTF();
            System.out.println("服务端已经成功接收到了文件类型: " + suffix);

            // 3.定义一个字节输出管道负责把客户端发送的文件数据写进去
            OutputStream os = new FileOutputStream("E:/tmp/" + UUID.randomUUID().toString() + suffix);

            // 4.从数据输入流中读取文件数据,写到字节输出流中
            byte[] buffer = new byte[1024];
            int l;

            while ((l = dis.read(buffer)) != -1) {
                os.write(buffer, 0, l);
            }

            os.close();
            System.out.println("服务端接收到文件保存成功!");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
